// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.standard.service;

import java.util.List;
import java.util.Map;

import com.liuxinlong.common.ImportResp;
import com.liuxinlong.modules.entity.Standard;

import javax.servlet.http.HttpServletResponse;

/**
 * 标准服务层接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月7日
 */
public interface StandardService {
    /**
     * 分页查询标准
     *
     * @param queryParam 查询条件
     * @return 标准列表
     */
    List<Map<String, Object>>  pageStandardInfo(Map<String, Object> queryParam);

    /**
     * 查询标准条数
     *
     * @param queryParam 查询条件
     * @return 标准条数
     */
    int getStandardCount(Map<String, Object> queryParam);

    /**
     * 新增标准
     *
     * @param standard 标准
     * @param content  文本信息
     */
    void addStandardInfo(Standard standard, String content);

    /**
     * 修改标准
     *
     * @param standard 标准
     * @param content  文本信息
     */
    void updateStandardInfo(Standard standard, String content);

    /**
     * 删除标准
     *
     * @param id 标准id
     */
    void deleteStandardInfo(String id);

    /**
     * 导出标准
     *
     * @param id 标准id
     */
    void exportStandardInfo(String id, HttpServletResponse response);

    /**
     * 导入数据预处理
     *
     * @param fileName 文件地址
     * @return 预处理数据
     */
    ImportResp importStandards(String fileName);

    /**
     * 批量新增标准信息
     *
     * @param dataList 标准信息列表
     * @return 失败数据
     */
    ImportResp batchAddStandard(List<Standard> dataList);

    /**
     * 标准锁定
     *
     * @param id 标准id
     */
    void lockDesignStandard(String id);

    /**
     * 标准流程发起
     *
     * @param id 标准id
     */
    void processStandard(String id);

    /**
     * 标准解锁
     *
     * @param id 标准id
     */
    void unlockDesignStandard(String id);

    /**
     * 查询标准草稿信息
     *
     * @param id 标准id
     * @return 标准草稿信息
     */
    Map<String, Object> loadDraft(String id);

    /**
     * 查询标准版本信息
     *
     * @param standardId 标准id
     * @return 标准版本信息列表
     */
    List<Map<String, Object>> queryStandardVersion(String standardId);

    /**
     * 查询标准文件信息
     *
     * @param standardId 标准id
     * @return 标准文件信息列表
     */
    List<Map<String, Object>> queryStandardFile(String standardId);

    /**
     * 废止标准
     *
     * @param id 标准id
     */
    void abolishStandard(String id);

    /**
     * 获取标准文件文件流
     *
     * @param standardId 标准id
     * @param userSn     用户sn
     * @param response   response
     */
    void getStandardFile(String standardId, String userSn, HttpServletResponse response);
}
